package pfc.taller.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import pfc.taller.comun.Constantes;
import pfc.taller.comun.Tipos.OBJ_JSON;
import pfc.taller.log.Log;
import pfc.taller.negocio.FuncionalidadJSON;

public class DevuelveJSON extends HttpServlet 
{
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	{
		this.doGetPost(request, response);
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
	{
		this.doGetPost(request, response);
	}
	
	private void doGetPost(HttpServletRequest request, HttpServletResponse response)
	{
		FuncionalidadJSON funcionalidad = new FuncionalidadJSON();
		Logger log						= Log.getInstance();
		String codJSON					= request.getParameter(Constantes.COD_JSON);
		String cadenaJSON 				= null;
		PrintWriter salida				= null;
		
		switch (OBJ_JSON.valueOf(codJSON)) 
		{
		case cliente:
			cadenaJSON = funcionalidad.clienteJSON( request.getParameter(Constantes.CLIENTE) );
			break;

		case coche:
			cadenaJSON = funcionalidad.cocheJSON( request.getParameter(Constantes.COCHE) );
			break;
			
		case listaFacturas:
			cadenaJSON = funcionalidad.listaFacturasJSON( request.getParameter(Constantes.CLIENTE) );
			break;
			
		case listaPresupuestos:
			cadenaJSON = funcionalidad.listaPresupuestosJSON( request.getParameter(Constantes.CLIENTE) );
			break;	
			
		case empleado:
			cadenaJSON = funcionalidad.empleadoJSON( request.getParameter(Constantes.EMPLEADO) );
			break;	
		
		case producto:
			cadenaJSON = funcionalidad.productoJSON( request.getParameter(Constantes.PRODUCTO) );
			break;	
			
		default:
			break;
		}
		
		response.setContentType("text/html");
		
		try 
		{
			salida = response.getWriter();
		} 
		catch (IOException e) 
		{
			log.trace("Ha petado al crearme la salida JSON para " + OBJ_JSON.valueOf(codJSON), e);
		}
		salida.println(cadenaJSON);
	}
}
